package com.spider.gp.create;

import com.fasterxml.jackson.databind.JsonNode;
//import liquibase.pro.packaged.S;
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableCell;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;
//import test.JsonUtils;

import java.io.FileInputStream;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class WordReaderUtil {
    // 字典表部分
//    public static void main(String[] args) {
//        String url = "D:\\附件一四川省公共资源交易平台系统数据规范（V2.7）20220321.docx";
//        for(int i = 1 ; i <= 10 ; i ++){
//            Map<String, List<String>> stringListMap = tableInWord(url, i);
//            // CREATE TABLE `bid_contact_login_log` (
//            //  `id` bigint(20) NOT NULL AUTO_INCREMENT,
//            //  `contact_id` bigint(20) DEFAULT NULL,
//            //  `ip_v4_address` varchar(15) DEFAULT NULL COMMENT '登录地址',
//            //  `login_time` datetime DEFAULT NULL COMMENT '登录时间',
//            //  PRIMARY KEY (`id`)
//            //) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='投标联系人登录时间记录';
//
//            StringBuffer str = new StringBuffer();
//            StringBuffer strInsert = new StringBuffer();
//            str.append(" CREATE TABLE `A").append(i).append("` (");
//            strInsert.append(" INSERT INTO `A").append(i).append("` (");
//            List<String> bt = stringListMap.get("bt");
//            List<String> sj = stringListMap.get("sj");
//            for (int j = 0 ; j < bt.size() ; j ++){
//                str.append(" `").append(toPinYin(bt.get(j))).append("` varchar(100) DEFAULT NULL COMMENT '").append(bt.get(j)).append("' ");
//                strInsert.append(" `").append(toPinYin(bt.get(j))).append("`");
//                if (j != bt.size() - 1){
//                    str.append(" ,");
//                    strInsert.append(" ,");
//                }
//                str.append("\n");
//
//            }
//            str.append(" ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ;");
//            strInsert.append(" ) VALUES (");
//            System.out.println(str.toString());
//            System.out.println("-- -----------------插入数据---------------------");
//            //INSERT INTO `gp_new`.`hang_ye`(`report_time`, `hy_zf`, `hy_zf_js_rate`, `hy_zf_lzg`, `hy_zf_ldg`, `hy_df`, `hy_df_js_rate`, `hy_df_lzg`, `hy_df_ldg`, `gn_zf`, `gn_zf_js_rate`, `gn_zf_lzg`, `gn_zf_ldg`, `gn_df`, `gn_df_js_rate`, `gn_df_lzg`, `gn_df_ldg`) VALUES ('2022-11-24', '贵金属 涨幅1.88%|房地产服务 涨幅1.63%|房地产开发 涨幅1.61%|', '涨/跌家：10/0 换手率：0.13%|涨/跌家：15/0 换手率：0.36%|涨/跌家：102/7 换手率：0.35%|', '600988 赤峰黄金 3.39%|300917 特发服务 6.09%|000736 中交地产 9.99%|', '600311 *ST荣华 0.68%|601588 北辰实业 0.0%|600223 鲁商发展 -3.05%|', '教育 涨幅-0.44%|汽车服务 涨幅-0.42%|中药 涨幅-0.39%|', '涨/跌家：7/12 换手率：0.52%|涨/跌家：7/6 换手率：0.1%|涨/跌家：31/39 换手率：0.4%|', '600636 国新文化 3.61%|601258 庞大集团 0.86%|000919 金陵药业 3.34%|', '000526 学大教育 -2.87%|301215 中汽股份 -3.66%|000590 启迪药业 -8.33%|', '昨日连板_含一字 涨幅3.43%|昨日连板 涨幅3.22%|租售同权 涨幅1.6%|', '涨/跌家：10/6 换手率：2.37%|涨/跌家：8/4 换手率：1.94%|涨/跌家：18/1 换手率：0.48%|', '000151 中成股份 10.02%|002116 中国海诚 9.98%|000732 ST泰禾 4.88%|', '002181 粤 传 媒 -6.01%|002181 粤 传 媒 -6.01%|000863 三湘印象 -1.65%|', '复合集流体 涨幅-1.59%|昨日触板 涨幅-1.56%|地塞米松 涨幅-0.86%|', '涨/跌家：3/14 换手率：0.79%|涨/跌家：3/11 换手率：0.06%|涨/跌家：2/8 换手率：0.4%|', '688020 方邦股份 1.61%|600217 中再资环 2.03%|600199 金种子酒 0.54%|', '002846 英联股份 -5.65%|002189 中光学 -4.74%|000153 丰原药业 -6.78%|');
//
//            for (int j = 0 ; j < sj.size() ; j ++){
//                StringBuffer strNew = new StringBuffer();
//                strNew = strNew.append(strInsert.toString());
//                JsonNode jsonNode = JsonUtils.parseObject(sj.get(j));
//                for (int a = 0 ; a < jsonNode.size() ; a ++){
//                    strNew.append(" '").append(jsonNode.get(a)).append("' ");
//                    if (a != bt.size() - 1){
//                        strNew.append(" ,");
//                    }
//
//                }
//                strNew.append(" )");
//
//                System.out.println(strNew.append(";").toString().replace("\"",""));
//            }
//
//
//            System.out.println("-- --------------------------------------");
//
//        }
//    }


//    public static void main(String[] args) {
//        String regEx = "[^0-9]";
//        Pattern p = Pattern.compile(regEx);
//        String url = "D:\\附件一四川省公共资源交易平台系统数据规范（V2.7）20220321.docx";
//        for (int i = 11; i <= 200; i++) {
//            Map<String, List<String>> stringListMap = tableInWord(url, i);
//            // CREATE TABLE `bid_contact_login_log` (
//            //  `id` bigint(20) NOT NULL AUTO_INCREMENT,
//            //  `contact_id` bigint(20) DEFAULT NULL,
//            //  `ip_v4_address` varchar(15) DEFAULT NULL COMMENT '登录地址',
//            //  `login_time` datetime DEFAULT NULL COMMENT '登录时间',
//            //  PRIMARY KEY (`id`)
//            //) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='投标联系人登录时间记录';
//
//            StringBuffer str = new StringBuffer();
//            str.append(" CREATE TABLE `A").append(i-1).append("` (");
//            List<String> sj = stringListMap.get("sj");
//            boolean isSC = true;
//            for (int j = 0; j < sj.size(); j++) {
//                JsonNode jsonNode = JsonUtils.parseObject(sj.get(j));
//                if (jsonNode.size() != 8){
//                    isSC = false;
//                    continue;
//                }
//                String xmmc = jsonNode.get(0).toString();//名称
//                String ywmc = jsonNode.get(1).toString();//英文名称
//                String sjlx = jsonNode.get(2).toString();//数据类型
//                String sjgs = jsonNode.get(3).toString();//数据格式
//                str.append(" `").append(ywmc.toLowerCase()).append("` ");
//
//                if (sjlx.contains("字符型")){
//                    Matcher m = p.matcher(sjgs);
//                    String result = m.replaceAll("").trim();
//                    str.append(" varchar(").append(result).append(")  DEFAULT NULL COMMENT '").append(xmmc).append("'");
//                }
//                if (sjlx.contains("数值型")){
//
//                    if (sjgs.contains(",")){
//                        String[] split = sjgs.split(",");
//                        Matcher m = p.matcher(split[0]);
//                        String result = m.replaceAll("").trim();
//                        str.append(" decimal(").append(result).append(",").append(split[1]).append(")  DEFAULT NULL COMMENT '").append(xmmc).append("'");
//                    }else {
//                        Matcher m = p.matcher(sjgs);
//                        String result = m.replaceAll("").trim();
//                        str.append(" int(").append(result).append(")  DEFAULT NULL COMMENT '").append(xmmc).append("'");
//                    }
//                }
//
//                if (sjlx.contains("日期时间型")){
//                    Matcher m = p.matcher(sjgs);
//                    String result = m.replaceAll("").trim();
//                    str.append(" varchar(").append("30").append(")  DEFAULT NULL COMMENT '").append(xmmc).append("'");
//                }
//                if (j != sj.size() - 1) {
//                    str.append(" ,");
//                }
//                str.append("\n");
//            }
//
//            str.append(" ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ;");
//            if (isSC){
//                System.out.println(str.toString().replace("\"",""));
//            }
//            System.out.println("-- --------------------------------------");
//
//        }
//    }

    // 所有字段
//    public static void main(String[] args) {
//        String regEx = "[^0-9]";
//        Pattern p = Pattern.compile(regEx);
//        String url = "D:\\附件一四川省公共资源交易平台系统数据规范（V2.7）20220321.docx";
//        for (int i = 11; i <= 200; i++) {
//            Map<String, List<String>> stringListMap = tableInWord(url, i);
//            // CREATE TABLE `bid_contact_login_log` (
//            //  `id` bigint(20) NOT NULL AUTO_INCREMENT,
//            //  `contact_id` bigint(20) DEFAULT NULL,
//            //  `ip_v4_address` varchar(15) DEFAULT NULL COMMENT '登录地址',
//            //  `login_time` datetime DEFAULT NULL COMMENT '登录时间',
//            //  PRIMARY KEY (`id`)
//            //) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='投标联系人登录时间记录';
//            //CREATE TABLE `jyzx_all_field` (
//            //  `code` varchar(5) DEFAULT NULL COMMENT '表',
//            //  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '名称',
//            //  `english_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '英文名称',
//            //  `data_type` varchar(50) DEFAULT NULL COMMENT '数据类型',
//            //  `data_format` varchar(100) DEFAULT NULL COMMENT '数据格式',
//            //  `data_range` varchar(200) DEFAULT NULL COMMENT '值域',
//            //  `is_bt` varchar(10) DEFAULT NULL COMMENT '必填值',
//            //  `public_range` varchar(255) DEFAULT NULL COMMENT '公开范围'
//            //) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4  COMMENT='交易中心指标ALL';
//
//            List<String> sj = stringListMap.get("sj");
//            boolean isSC = true;
//            for (int j = 0; j < sj.size(); j++) {
//                JsonNode jsonNode = JsonUtils.parseObject(sj.get(j));
//                if (jsonNode.size() != 8){
//                    isSC = false;
//                    continue;
//                }
//                String xmmc = jsonNode.get(0).toString();//名称
//                String ywmc = jsonNode.get(1).toString();//英文名称
//                String sjlx = jsonNode.get(2).toString();//数据类型
//                String sjgs = jsonNode.get(3).toString();//数据格式
//                String zy = jsonNode.get(4).toString();//值域
//                String btz = jsonNode.get(5).toString();//必填值
//                String gkfw = jsonNode.get(6).toString();//公开范围
//                String bz = jsonNode.get(6).toString();//备注
//                str.append(" `").append(ywmc.toLowerCase()).append("` ");
//
//
//                str.append("\n");
//            }
//
//            str.append(" ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ;");
//            if (isSC){
//                System.out.println(str.toString().replace("\"",""));
//            }
//            System.out.println("-- --------------------------------------");
//
//        }
//    }

//    /**
//     * 读取文档中表格
//     *
//     * @param filePath 文档路径
//     * @param orderNum 设置需要读取的第几个表格
//     */
//    public static Map<String, List<String>> tableInWord(String filePath, Integer orderNum) {
//        Map<String, List<String>> map = new HashMap<>();
//        List<String> bt = new ArrayList<>();
//        List<String> sj = new ArrayList<>();
//        try {
//            FileInputStream in = new FileInputStream(filePath);//载入文档
//            // 处理docx格式 即office2007以后版本
//            if (filePath.toLowerCase().endsWith("docx")) {
//                //word 2007 图片不会被读取， 表格中的数据会被放在字符串的最后
//                XWPFDocument xwpf = new XWPFDocument(in);//得到word文档的信息
//
//                Iterator<XWPFTable> itpre = xwpf.getTablesIterator();//得到word中的表格
//                int total = 0;
//                while (itpre.hasNext()) {
//                    itpre.next();
//                    total += 1;
//                }
//                Iterator<XWPFTable> it = xwpf.getTablesIterator();//得到word中的表格
//                // 设置需要读取的表格  set是设置需要读取的第几个表格，total是文件中表格的总数
//                int set = orderNum;
//                int num = set;
//                // 过滤前面不需要的表格
//                for (int i = 0; i < set - 1; i++) {
//                    it.hasNext();
//                    it.next();
//                }
//                List<String> tableList = new ArrayList<>();
//                while (it.hasNext()) {
//                    XWPFTable table = it.next();
//                    System.out.println("-- 这是第" + (num -1)  + "个表的数据");
//                    List<XWPFTableRow> rows = table.getRows();
//                    //读取每一行数据
//                    for (int i = 0; i < rows.size(); i++) {
//                        XWPFTableRow row = rows.get(i);
//                        //读取每一列数据
//                        List<XWPFTableCell> cells = row.getTableCells();
////                        List<String> rowList = new ArrayList<>();
//                        List list = new ArrayList();
//
//                        for (int j = 0; j < cells.size(); j++) {
//
//                            XWPFTableCell cell = cells.get(j);
////                            rowList.add(cell.getText());
//                            //输出当前的单元格的数据
//                            if (i == 0) {
//                                //表头 - 字段
//                                bt.add(cell.getText());
//                            } else {
//                                list.add(cell.getText());
//                            }
//
//                        }
//                        if (i != 0) {
//                            sj.add(JsonUtils.toJSONString(list));
//                        }
//
////                        tableList.addAll(rowList);
//                    }
//                    // 过滤多余的表格
//                    while (num < total) {
//                        it.hasNext();
//                        it.next();
//                        num += 1;
//                    }
//                }
//                map.put("bt", bt);
//                map.put("sj", sj);
//                return map;
//            }
//
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        return null;
//    }
//
//
//    public static String toPinYin(String chineseLan) {
//        String ret = "";
//        // 将汉字转换为字符数组
//        char[] charChineseLan = chineseLan.toCharArray();
//        // 定义输出格式
//        HanyuPinyinOutputFormat hpFormat = new HanyuPinyinOutputFormat();
//        // 小写格式输出
//        hpFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
//        // 不需要语调输出
//        hpFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
//        try {
//            for (int i = 0; i < charChineseLan.length; i++) {
//                if (String.valueOf(charChineseLan[i]).matches("[\u4e00-\u9fa5]+")) {
//                    // 如果字符是中文,则将中文转为汉语拼音（获取全拼则去掉红色的代码即可）
//                    ret += PinyinHelper.toHanyuPinyinStringArray(charChineseLan[i], hpFormat)[0].substring(0, 1);
//                } else {
//                    // 如果字符不是中文,则不转换
//                    ret += charChineseLan[i];
//                }
//            }
//        } catch (BadHanyuPinyinOutputFormatCombination e) {
//            e.printStackTrace();
//        }
//        return ret;
//    }
}
